[新機能]Amazon Route 53 Traffic Flowで複雑なルーティングポリシーを可視化する
ども、大瀧です。 本日、AWSのマネージドDNSサービスRoute 53にTraffic Flowという機能が追加されました。 早速試してみたのでレポートします。
Route 53 Traffic Flowとは
Route 53には、純粋なDNSレコードにルーティングポリシーというRoute 53独自の設定を付与することができます。 ルーティングポリシーについてはAWS再入門のRoute 53の回で説明があると思うので、ここでは割愛します。ルーティングポリシーを適用すると、↓のスクリーンショットのように1つのDNS名に対して複数のレコードが定義されます。
さらに複数のルーティングポリシーを組み合わせることもできるのですが、だんだんと同じDNS名を持つレコードが増えてきて、依存関係や評価ルールを見るのが辛くなってきます。それを解決するのが今回のTraffic Flowです。Traffic Flowでは、ルーティングポリシーがWebブラウザ上のビジュアルエディタでフローチャート風に可視化されるので、ルールの評価順やルールの設定内容をわかりやすく確認、設定できます。
手順
Route 53の管理画面のメニューに[Traffic Flow]カテゴリが追加されています。まずは[Traffic Policies]をクリックし、[Create traffic policy]ボタンをクリックしTraffic Policy作成画面を開きます。
Traffic Policyはルーティングルールと紐付くレコードのレスポンスをセットにした設定です。任意のポリシー名、説明を入力し、[Next]をクリックします。
ビジュアルエディタが表示されるので、Traffic Policyを設定していきます。まずは[DNS type]でレコードタイプを選択し、[+ Connect to...]をクリックしてポリシーを追加します。
[+ Connect to...]の候補には各ルーティングポリシーとレコードのレスポンス(New endpoint
)が表示されます。ポリシーがない状態でEndpointを登録するとルーティングポリシーなしの通常のレコードになります。今回はWeighted Rule
を選択し加重ルーティングポリシーを追加します。
40:20の比率で1.1.1.1
と2.2.2.2
を返す設定にしてみました。
以下のようにルーティングポリシーを多重構造にすることもできます。この辺りは可視化されるとすごくわかりやすくなりますね。
[Create traffic policy]ボタンをクリックするとポリシーが作成されます。続いてポリシーに紐付くTraffic Recordを作成します。Traffic Policyにレコードタイプとレスポンスのレコードは定義済みなので、ここではDNS名とTTLのみ設定します。[Hosted zone]からゾーンを選択、[Policy record DNS Name]にDNS名、TTLを確認し[Create policy records]をクリックすればレコード作成が開始します。
[Status]がCreating
になるので、しばらく待ちます。
Applied
になったら作成完了です。
メニューの[Hosted Zones]からレコード一覧を確認すると、Traffic Policyによって定義されたレコードが確認できます。レコードのプロパティにはTraffic Policyの管理下にあることが確認できます。
実際の名前解決は、Traffic Policy管理下でも通常通り返ってきます。
$ host multi.otaki.classmethod.info multi.otaki.classmethod.info has address 1.1.1.1 $
まとめと感想
Traffic PolicyによるRoute 53のルーティングポリシー設定を紹介しました。複雑なポリシー設定をするときには便利に使えると思います。 ただ、定義済みのレコードとの互換性はないため、既に複雑なポリシー設定をしている場合Traffic Policyで再度ポリシーを定義する必要があります。Roadworkerなど外部ツールもツール側の対応待ちになりますね。
Traffic PolicyがPolicy Recordと別れているので、Traffic Policyの使い回しを想定した設計になっているようですが、EndpointがTraffic Policyに含まれてしまっているのでバーチャルホストのような構成をしない限り、あまり、Traffic Policyを使い回すケースは多く無さそうです。その代わり、AWS CLIでのポリシー定義のエクスポートとManagement Consoleでのインポートができるようです(AWS CLIの対応バージョンが未リリースのため未確認)。Endpoint Groupというようにレスポンスのレコードをコンポーネント化してポリシーに紐付けられるようになるとより便利になるかもしれません。